/* 
   系统统一定义的头文件 ,可以修改      
  
*/
// 定义复数结构体
typedef {
     double re;   //实部
     double im;   //虚部
}complex;

complex add(complex a,complex b);
complex sub(complex a,complex b);
complex mul(complex a,complex b);
complex div(complex a,complex b);
void show(complex a ,char op,complex b,complex c); //直观显示运算式。  a op b = c
complex add(complex a,complex b)//复数加法
{
	complex c;
	c.re=a.re+b.re;
	c.im=a.im+b.im;
	return c;
} 
complex sub(complex a,complex b)//复数减法
{
	complex c;
	c.re=a.re-b.re;
	c.im=a.im-b.im;
	return c;
}
complex mul(complex a,complex b)//复数乘法
{
	complex c;
	c.re=(a.re*b.re)-(a.im*b.im);
	c.im=(a.re*b.im)+(a.im*b.re);
	return c;
}
complex div(complex a,complex b)//复数除法
{
	complex c;
	double z=b.re*b.re+b.im*b.im;
	c.re=((a.re*b.re)+(a.im*b.im))/z;
	c.im=((a.re*b.im)-(a.im*b.re))/z;
	return c;
}
void show(complex a,char op,complex b,complex c)//输出
{
	printf("%.2f", a.re);
	if(a.im>=0)
		printf("+");//判断a的虚部为正数，实部后的符号为正
	printf("%.2fi %c %.2f",a.im,op,b.re);
	if(b.im>=0)
		printf("+"); //判断b的虚部为正数，实部后的符号为正
	printf("%.2fi=",b.im);
	if(c.re!=0)
	{
		if(c.im>0)
		{
			printf("%.2f+%.2fi",c.re,c.im);//判断c的虚部大于0，虚部前的符号为+
		}
		else if(c.im==0)
		{
			printf("%.2f",c.re);//判断c的虚部等于0，就只有输出实部
		}
		else
		{
			printf("%.2f%.2fi",c.re,c.im);//c的虚部小于0，虚部前不用输出+
		}
		
	}
	else//c的实部为0，不用输出实部
	{
		if(c.im==0)
		{
			printf("0");
		}
		else 
		{
			printf("%.2fi",c.im);
		}
    }
}